#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Times;
namespace Cephei.QL.Termstructures.Volatility.Equityfx
{
     // <summary> 
	// ! This class calculates time-dependent Black volatilities using as input a vector of (ATM) Black volatilities observed in the market.  The calculation is performed interpolating on the variance curve. Linear interpolation is used as default; this can be changed by the setInterpolation() method.  For strike dependence, see BlackVarianceSurface.  \todo check time extrapolation
	// </summary>
    [Guid ("8F77D4C4-9643-4167-8F74-1C1CC4B0C990"),ComVisible(true)]
	public interface IBlackVarianceCurve : Cephei.QL.Termstructures.Volatility.Equityfx.IBlackVarianceTermStructure
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Cephei.QL.Times.IDayCounter DayCounter {get;}
        
		 DateTime MaxDate {get;}
        
		 Double MaxStrike {get;}
        
		 Double MinStrike {get;}
    }

    // <summary> 
	// ! This class calculates time-dependent Black volatilities using as input a vector of (ATM) Black volatilities observed in the market.  The calculation is performed interpolating on the variance curve. Linear interpolation is used as default; this can be changed by the setInterpolation() method.  For strike dependence, see BlackVarianceSurface.  \todo check time extrapolation Factory
	// </summary>
   	[ComVisible(true)]
    public interface IBlackVarianceCurve_Factory // : Collection_Factory<IBlackVarianceCurve, ICell<IBlackVarianceCurve>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    IBlackVarianceCurve Create (DateTime referenceDate, Cephei.IVector<DateTime> dates, Cephei.IVector<Double> blackVolCurve, Cephei.QL.Times.IDayCounter dayCounter, Microsoft.FSharp.Core.FSharpOption<Boolean> forceMonotoneVariance);
    }
}

